﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using GMap.NET.CacheProviders;
using GMap.NET.Projections;
using GMap.NET.Internals;

namespace GMap.NET.RouteProviders
{
    /// <summary>
    /// Interface für RouteProviders.
    /// 
    /// Autor: Viktor Bergmann - http://greatmaps.codeplex.com/SourceControl/network/Forks/ViktorBergman/viktorbergman
    /// </summary>
    public interface IRouteProvider
    {
        string ApplicationKey { get; set; }

        /// <summary>
        /// get route between two points
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <param name="avoidHighways"></param>
        /// <param name="Zoom"></param>
        /// <returns></returns>
        MapRoute GetRouteBetweenPoints(PointLatLng start, PointLatLng end, bool avoidHighways, int Zoom);
        /// <summary>
        /// get route between two points
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <param name="avoidHighways"></param>
        /// <param name="Zoom"></param>
        /// <returns></returns>
        MapRoute GetRouteBetweenPoints(string start, string end, bool avoidHighways, int Zoom);
        /// <summary>
        /// Gets a walking route (if supported)
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <param name="Zoom"></param>
        /// <returns></returns>
        MapRoute GetWalkingRouteBetweenPoints(PointLatLng start, PointLatLng end, int Zoom);
        /// <summary>
        /// Gets a walking route (if supported)
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <param name="Zoom"></param>
        /// <returns></returns>
        MapRoute GetWalkingRouteBetweenPoints(string start, string end, int Zoom);
    }
}
